﻿
using BCCommon;
using BCCommon.TMS.Transport;
using BCDto.Sim.Admin.Admin;
using BCDto.TMS.VehicleTransportBusinessConfig;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BCService.TMS.VehicleTransportBusinessConfig
{
    /// <summary>
    /// 车辆运输业务配置
    /// </summary>
    public interface IVehicleTransportBusinessConfigService
    {
        /// <summary>
        /// 添加车辆运输业务配置
        /// </summary>
        /// <param name="admin">管理员信息</param>
        /// <param name="requestDto">车辆运输业务配置新增信息</param>
        /// <returns></returns>
        VehicleTransportBusinessConfigViewDto Create(AdminDto admin, VehicleTransportBusinessConfigRequestDto requestDto);

        /// <summary>
        /// 获取车辆运输业务配置
        /// </summary>
        /// <param name="admin">管理员信息</param>
        /// <param name="transportBusiness">运输业务</param>
        /// <param name="pageIndex">页号</param>
        /// <param name="pageSize">每页数据条数</param>
        /// <returns></returns>
        PageableList<VehicleTransportBusinessConfigViewDto> Query(AdminDto admin, TransportBusinessType? transportBusiness, int pageIndex, int pageSize);

        /// <summary>
        /// 修改车辆运输业务配置
        /// </summary>
        /// <param name="admin">管理员信息</param>
        /// <param name="vehicleTransportBusinessConfigId">车辆运输业务配置Id</param>
        /// <param name="putDto">车辆运输业务配置修改信息</param>
        /// <returns></returns>
        VehicleTransportBusinessConfigViewDto Update(AdminDto admin, int vehicleTransportBusinessConfigId, VehicleTransportBusinessConfigPutDto putDto);

        /// <summary>
        /// 删除车辆运输业务配置
        /// </summary>
        /// <param name="admin">管理员信息</param>
        /// <param name="vehicleTransportBusinessConfigId">车辆运输业务配置Id</param>
        void Delete(AdminDto admin, int vehicleTransportBusinessConfigId);
        /// <summary>
        /// 获取车辆运输业务配置列表(仅供App使用)
        /// </summary>
        /// <param name="agentRecordId">代理商Id</param>
        /// <param name="countyCode">区县编码</param>
        /// <returns></returns>
        IEnumerable<VehicleTransportBusinessConfigViewDto> GetList(long? agentRecordId,string countyCode);
        /// <summary>
        /// 获取车辆运输业务配置列表（获取基本列表，不获取重写列表）
        /// </summary>
        /// <returns></returns>
        IEnumerable<VehicleTransportBusinessConfigDto> GetList();

        /// <summary>
        /// 启用/禁用车辆运输业务配置
        /// </summary>
        /// <param name="admin">管理员信息</param>
        /// <param name="vehicleTransportBusinessConfigId">车辆运输业务配置Id</param>
        /// <param name="enabled">是否启用</param>
        /// <returns></returns>
        VehicleTransportBusinessConfigDto UpdateEnabled(AdminDto admin, int vehicleTransportBusinessConfigId, bool enabled);
        /// <summary>
        /// 获取所有的车辆运输业务配置
        /// </summary>
        /// <param name="enabled">是否可用</param>
        /// <returns></returns>
        IEnumerable<VehicleTransportBusinessConfigDto> GetAllList(bool? enabled);
    }
}
